Compreendendo Timestamps de Computador com NTP
postado por Richard N Williams on Setembro 8th, 2008
A forma como um computador lida com o tempo é totalmente diferente das formas como os humanos percebem. Nós organizamos o tempo em segundos, minutos, horas, dias, semanas, meses e anos, enquanto os computadores, por outro lado, organizam o tempo como um único número que representa os segundos que passaram de um único ponto no tempo, conhecido como a época principal.
A maioria dos computadores usa NTP (Network Time Protocol) para lidar com o tempo e em redes, muitos são sincronizados usando um servidor de tempo dedicado NTP. NTP não sabe nada sobre dias, anos ou séculos, apenas os segundos da época principal. Esta época principal é definida (para a maioria dos sistemas) à meia-noite na virada do século XX que para um ser humano seria gravado como algo como: 00: 00 - 01,01,1900.
Computadores, no entanto, contam o tempo como o número de segundos após esse ponto. Se um computador estivesse no 1900 seu timestamp na meia-noite de janeiro 1 seria 0 enquanto no 1972 na mesma data o timestamp seria 2,272,060,800, o que representa o número de segundos desde 1900.
Os timestamps recomeçam cada 136 anos com o próximo envolvimento devido no 2036, isso causou desconforto entre alguns que temem um cenário do tipo Millennium Bug, embora a maioria de duvidas de que tais eventos ocorriam, no entanto, quando ocorre um encerramento do timestamp O número inteiro da era será adicionado (+ 1), para permitir que os computadores lidem com intervalos de tempo que cobrem mais do que um envolvimento. Se os computadores e o NTP precisam lidar com o tempo que se espalha antes da primeira época, um número inteiro negativo é usado (para o ano 1500 a -3 será usado para representar três ciclos de anos 136).
Os carimbos de horário são usados em praticamente todas as transações que os computadores modernos são obrigados a fazer, como o envio de emails, depuração e programação. Como o tempo é linear, um computador sabe que cada marca de tempo é sempre maior do que a anterior e, portanto, computadores e NTP acham difícil lidar com imprecisões no tempo, particularmente quando o tempo parece repentinamente retroceder.
Isso pode acontecer se os computadores não estiverem sincronizados ao mesmo tempo. Se um e-mail for enviado para uma máquina com um relógio mais lento, parece que o computador foi recebido antes de ter sido enviado. A falta de sincronização pode causar sérios problemas e até mesmo deixar um sistema vulnerável a ataques maliciosos e até fraudes.
Por isso, a maioria das redes de computadores são sincronizadas com a UTC (Tempo Universal Coordenado). UTC é uma escala de tempo global e o mesmo para todos em todo o mundo é baseado no tempo contado por relógios atômicos que são altamente precisos, sem ganhar nem perder um segundo em milhões de anos.
A maioria das redes de computadores usa uma O servidor NTP para receber uma hora UTC para sincronizar seus computadores também. O UTC está disponível na Internet (embora não seguro), através da rede GPS (Sistema de Posicionamento Global), ou recebendo transmissões nacionais de tempo e frequência através de ondas longas.
O NTP sincroniza um computador verificando a hora UTC recebida e adicionando ou mantendo o timestamp de um computador até que ele coincida perfeitamente com UTC. Ao usar um servidor de tempo NTP dedicado, o UTC pode ser mantido em uma rede para alguns milissegundos de hora UTC.